//基地址
//超时时间
import store from "@/store/index";
const baseURL = "https://pcapi-xiaotuxian-front-devtest.itheima.net";
const request={
  //拦截前触发（请求拦截器）
  invoke(config){
    //1请求拦截配置对象
    //2判断请求url是否以http开头是否有域名
    //提示加载中
    uni.showLoading({
      title: '加载中',
      mask:true
    })//显示加载中
    //判断请求url是否以http开头是否有域名没有我们就拼接
    if(!config.url.startsWith("http")){
      config.url = baseURL + config.url;
    }
    //设置请求超时时间
    config.timeout = 10000;
    //请求头
    config.header = {
      ...config.header, // 保留原本的 header
      "source-client": "miniapp", // 添加小程序端调用标识
    };
    //请求头携带token
    const token = store.state.user.profile.token;
    if (token) {
      config.header.Authorization = token;
    }
  },
  //关闭加载中  
  complete() {
    uni.hideLoading();//隐藏加载中
  }
}
uni.addInterceptor('request', request);
uni.addInterceptor("uploadFile", request);

//拦截后触发（响应拦截器）
const http= (config)=>{
  return new Promise((resolve,reject)=>{
    uni.request({
      ...config,
      success(res){
        //判断响应状态码200-300之间算成功(为什么要配置因为uni-app里面不管你状态码为多少都会走成功回调)
        if(res.statusCode >= 200 && res.statusCode < 300){
          resolve(res.data);
        }else{
        //请求失败
        reject(res);
        uni.showToast({
            icon: 'none',
            title: res.data || '请求错误',
            mask:true
          })
      }
    },
    //网络错误
    fail(err){
      uni.showToast({
        icon: 'none',
        title: res.data || '网络错误换个网络试试'
      })
    reject(err);
    }
    })
  })
}
//完整写法
const methoodList=["get","post","put","delete"];
methoodList.forEach((method)=>{
  http[method]=function (url,data){
    return http({
      url,
      method,
      data
    })
  }
})
//低配
//  http.get=function (url,data={}){
//   return http({
//     url,
//     method:"GET",
//     data
//   })
// }
// http.post=function (url,data={}){
//   return http({
//     url,
//     method:"POST",
//     data
//   })
// }
export default http;
    
